﻿using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using RolePermession.BLL;
using RolePermession.MODEL;
using System.Data;

namespace RolePermession.API.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class RolePermessionsController : ControllerBase
    {
        RolePermessionbll bll;
        ILogger<RolePermessionsController> logger;
        public RolePermessionsController(RolePermessionbll bll, ILogger<RolePermessionsController> logger)
        {
            this.bll = bll;
            this.logger = logger;
        }
        [HttpGet]
        public string ADD()
        {
            try
            {
          
            return "$一、" +
                    $"值类型主要包括：- 结构体（structs）" +
                    $"- 枚举（enums）" +
                    $"- 整数类型（int, short, long, byte, uint, ushort, ulong, sbyte）" +
                    $"- 浮点类型（float, double, decimal）" +
                    $"- 布尔类型（bool）" +
                    $"- 字符类型（char）" +
                    $"常见的引用类型：类（classes）、接口（interfaces）、委托（delegates）、数组（arrays）、字符串 (String)、集合类 (Collection Classes)" +
                    $"" +
                    $"" +
                    $"二、常见的方法" +
                    $"1取当前年月日时分秒 DateTime currentTime=System.DateTime.Now;" +
                    $"2取当前月 int data=currentTime.Month;" +
                    $"3取当前日 int data=currentTime.Day;"+
                    $"4取当前毫秒 int data=currentTime.Millisecond;" +


                    $"取中文日期显示――年月日时分 string strY=currentTime.ToString('f')" +
                    $"取中文日期显示_年月 string strYM=currentTime.ToString('y')" +
                    $"取中文日期显示_月日 string strMD=currentTime.ToString('m')" +
                    $"取中文年月日 string strYMD=currentTime.ToString('D')" +


                    $"字符型转换 转为字符串 12345.ToString('n')" +
                    $"取字串长度 string str='123' int Len = str.Length" +
                    $"字码转换 转为比特码 byte[] bytStr = System.Text.Encoding.Default.GetBytes(str)" +
                    $"字串替换" +
                    $"string str='中国';  str=str.Replace('国','央')" +
                    $"Math.Max(i,j) int x=Math.Max(5,10)" +
                    $"字串对比" +
                    $"语法:; __检测字串str1是否与字串str2相等,返回布尔值, str1.Equals(str2)" +
                    $"在字串中指定索引位插入指定字符 str1.Insert(1,'字');在str1的第二个字符处插入“字”，如果str1='中国'，插入后为“中字国”" +
                    $"查找字串中指定字符或字串（一次）出现的位置,返回索引值 str1.IndexOf('字') str1.IndexOf('字')；" +
                    $"从指定位置开始删除指定数的字符 string str1='我是萨达姆的崇拜者之一;  Response.Write(str1.Remove(5,4)); //结果为“我是萨达姆之一”" +
                    $"" +
                    $"" +
                    $"三表设计原则" +
                    $"1. 合理选择数据类型" +
                    $"在数据库表的设计过程中，合理选择数据类型能够显著提升性能并减少存储开销。例如，在处理浮点数时，DECIMAL 类型适用于需要高精度计算的场景，而 FLOAT 和 DOUBLE 则更适合对精度要求较低的情况" +
                    $"2。此外，应尽量避免使用过大的字符串类型（如 VARCHAR(100)），因为这会增加插入和更新操作中的验证成本" +
                    $"3。" +
                    $"2. 避免过多使用 NULL 值" +
                    $"为了优化存储效率和查询逻辑，建议将大部分字段定义为 NOT NULL。如果某个字段可能为空，则可以通过显式的默认值替代 NULL 来简化业务逻辑。这是因为每条记录中只要有 NULL 值，就会引入额外的空间消耗用于标记这些 NULL 值的存在" +
                    $"4。另外，NULL 的存在可能导致某些复杂的 SQL 查询返回意外结果，比如涉及布尔运算或集合比较的操作" +
                    $"5。" +
                    $"3. 设置合理的字段约束条件" +
                    $"通过为主键和其他重要字段添加唯一性约束，可以有效防止重复数据的录入，从而维护数据的一致性和完整性1。同时，利用外键约束还可以建立不同表格之间的关联关系，进一步增强系统的健壮性。" +
                    $"4. 使用 JSON 或其他复杂结构需谨慎" +
                    $"尽管现代 RDBMS 支持像 JSON 这样的半结构化数据格式，但在实际应用前应当仔细评估其必要性。虽然它们提供了灵活性，但同时也牺牲了一定程度上的检索速度和索引效果2。只有当确实面临高度动态变化的数据模型时才考虑采用此类方案" +
                    $"CREATE TABLE example (" +
                    $"   id INT AUTO_INCREMENT PRIMARY KEY," +
                    $"   name VARCHAR(50) NOT NULL DEFAULT ''," +
                    $"    value DECIMAL(10,2)," +
                    $"    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);" +
                    $"明确各表详细数据类型和属性";
            }
            catch (Exception)
            {

                throw;
            }

        }
       
    }
}
